package com.bd.scm.dao.mapper.user;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bd.scm.domain.dto.system.BdProcResetDataDto;
import com.bd.scm.domain.dto.timeCard.TimeCardDto;
import com.bd.scm.domain.models.user.UserVacation;
import com.bd.scm.domain.models.user.UserVacationImport;
import com.bd.scm.domain.models.user.UserVacationImport2;
import com.bd.scm.domain.models.user.UserVacationImport3;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserVacationMapper {


    /**
     * 假期列表
     * @param userVacation
     * @param userVacation
     * @return
     */
    List<UserVacation> vacationList(UserVacation userVacation);

    int updateJqInfo(UserVacation userVacation);
    int getFaDing(UserVacation userVacation);
    //查询根据ID查询锁定假期额度
    int getSdjqts(UserVacation userVacation);
    void reduceNianJia(UserVacation userVacation);
    int sockVacation(UserVacation userVacation);

    void addholidayInfo3(UserVacation userVacation);
    void addholidayInfo7(UserVacation userVacation);

    int setLimit(UserVacation userVacation);

    int clearingZero(UserVacation userVacation);
    int addholidayInfo(UserVacation userVacation);
    int flClearingZero(UserVacation userVacation);
    int addholidayInfo2(UserVacation userVacation);

    /**
     * 录入
     * @param userVacation
     * @return
     */
    int luRuVacation(UserVacation userVacation);

    void execluRuVacation(UserVacation userVacation);
    void execTaskRuVacation();

    /**
     * 判断假期导入人员是否存在
     * @param userNo
     * @return
     */
    String isExistByUserNo(@Param("userNo") String userNo);

    /**
     * 导入年假累加
     * @param userVacationImport
     * @return
     */
    int updateNianJia(UserVacationImport userVacationImport);

    void addholidayInfo4(UserVacationImport userVacationImport);
    void addholidayInfo5(UserVacationImport2 userVacationImport);
    void addholidayInfo8(UserVacationImport2 userVacationImport);
    void addholidayInfo6(UserVacationImport3 userVacationImport);
    /**
     * 导入锁定年假累加
     * @param userVacationImport
     * @return
     */
    int updateLock(UserVacationImport2 userVacationImport);
    /**
     * 导入调休累加
     * @param userVacationImport
     * @return
     */
    int updateBreak(UserVacationImport3 userVacationImport);

    /**
     * 考勤卡加班转调休调用 修改人员额度表 加上
     * @param jsonObject duration 转换调休时长  userSerial 人员ID
     * @return
     */
    int updateTx(JSONObject jsonObject);

    /**
     * 考勤卡加班转调休调用 修改人员额度表  减去
     * @param jsonObject otToRestHours 转换调休时长  userSerial 人员ID
     * @return
     */
    int updateTx2(JSONObject jsonObject);

    /**
     * 考勤卡加班转调休调用  类型是加班转调休类型的 申请时长  人员ID
     * @param jsonObject
     * @return
     */
    int updateRealTxts(JSONObject jsonObject);

    /**
     * 考勤卡加班转调休调用  添加假期历史表 加上
     * @param jsonObject duration 转换调休时长  userSerial 人员ID
     * @return
     */
    int insertBdKqHolidays(JSONObject jsonObject);

    /**
     * 考勤卡加班转调休调用  添加假期历史表 减去
     * @param jsonObject otToRestHours 转换调休时长  userSerial 人员ID
     * @return
     */
    int insertBdKqHolidays2(JSONObject jsonObject);

    /**
     *
     */
    void calculationVacation();

    /**
     * 查询某人的调休以及上限
     * @param minute 分钟  userSerial 人员ID
     * @return
     */
    int getBdNianjiaOne(JSONObject jsonObject);

  /**
   * 查询全局保存法定年假、福利年假清0时间设置
   * @return fdNjClearDate 法定年假清0时间 flNjCleaDate 福利年假清0时间
   */
  JSONObject getfdflNjClearDate();

    /**
     * 全局保存法定年假、福利年假清0时间设置
     * @param userVacation fdNjClearDate 法定年假清0时间 flNjCleaDate 福利年假清0时间
     * @return
     */
    int updatefdflNjClearDate(UserVacation userVacation);

    /**
     * 计算假期
     * @param bdProcResetDataDto #{beginDate},${lx},#{userSerial},#{operator}
     */
    void execResetData(BdProcResetDataDto bdProcResetDataDto);
}
